package com.yohann.utils.result;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * <p>
 * 统一响应结果
 * </p>
 *
 * @author Yohann
 * @since 2020/9/21
 */
@Data
public class Result {
    //是否成功
    private Boolean success;

    //返回码
    private Integer code;

    //返回消息
    private String message;

    //返回数据
    private Map<String, Object> data = new HashMap<>();

    //把构造方法私有
    private Result() {
    }

    //成功静态方法
    public static Result ok() {
        Result r = new Result();
        r.setSuccess(true);
        r.setCode(ResultInfo.SUCCESS.getCode());
        r.setMessage(ResultInfo.SUCCESS.getMessage());
        return r;
    }

    //失败静态方法
    public static Result error() {
        Result r = new Result();
        r.setSuccess(false);
        r.setCode(ResultInfo.ERROR.getCode());
        r.setMessage(ResultInfo.ERROR.getMessage());
        return r;
    }

    //自行选择状态
    public static Result state(boolean state) {
        if (state) {
            return Result.ok();
        }
        return Result.error();
    }

    public Result success(Boolean success) {
        this.setSuccess(success);
        return this;
    }

    public Result message(String message) {
        this.setMessage(message);
        return this;
    }

    public Result code(Integer code) {
        this.setCode(code);
        return this;
    }

    public Result data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }

    public Result data(Map<String, Object> map) {
        this.setData(map);
        return this;
    }
}